/*
 * Saphre - Suffix Arrays for Phrase Extraction
 * Copyright (C) 2013 
 * Dale Gerdemann - Tübingen, Germany 
 * Niko Schenk - Frankfurt am Main, Germany
 * All rights reserved.
 *
 * This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program. If not, see <http://www.gnu.org/licenses/>.
 *
 */
package saphre.commands;

import util.Interex;
import util.Interval;
import saphre.core.Store;
import saphre.core.SuffixArray;
import util.tokenization_io.TokenIterator;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;

/**
 * 
 * @author Niko Schenk
 */
public class CmdAssignment {

    /**
     * 
     * @param store
     * @param sa
     * @param top
     * @param variables
     * @param m 
     */
    public void CmdAssignment(Store store, SuffixArray sa, Interval top, Map<String, Interex> variables, Matcher m) {
        String variable = m.group(1);

        String untokenized = m.group(2);
        TokenIterator tok =
                //   store.getTokenizer().iterator(untokenized, true);
                store.getTokenizer().iterator(untokenized);
        List<Integer> toks = new ArrayList<Integer>();
        while (tok.hasNext()) {
            String s = tok.next();
            toks.add(store.wordToInt(s));

            int[] pattern = new int[toks.size()];
            for (int i = 0; i < toks.size(); i++) {
                pattern[i] = toks.get(i);
            }
        }
        int[] pattern = new int[toks.size()];
        for (int i = 0; i < toks.size(); i++) {
            pattern[i] = toks.get(i);
        }
        Interval found = sa.search(pattern, top);
        System.out.println(found);
        variables.put(variable, new Interex(found, sa, store));
    }
}